const express = require('express');
const router = express.Router();
// 导入采购订单控制器（类实例）
const procurementOrderController = require('../controller/ProcurementOrderController');

/**
 * 采购订单路由说明：
 * 基础路径： /procurement/orders（需在主路由中挂载）
 * 所有接口均返回统一格式：{ success: boolean, message: string, data?: any }
 */

// 1. 获取采购订单列表（支持筛选和分页）
// 请求方式：GET
// 示例： /procurement/orders?status=1&page=1&pageSize=10&startDate=2025-10-01
router.get('/', procurementOrderController.getOrderList);

// 7.根据供应商ID获取对应的食材列表
router.get('/supplier_goods', procurementOrderController.getGoodsListBySupplierId);

// 8. 删除采购订单明细项
router.delete('/delete_items/:orderId/:goodsId', procurementOrderController.deleteOrderGoodsItem);

// 9.删除采购订单
router.delete('/orders/:orderId', procurementOrderController.deleteOrder);

// 10.新增采购订单中的 商品项目
router.post('/orders/:orderId/items', procurementOrderController.addOrderGoodsItem);

// 11.更新食材档案信息
router.put('/goods/:goodsId', procurementOrderController.updateGoodsInfo);

// 2. 获取单个采购订单详情（含明细、商品、供应商信息）
// 请求方式：GET
// 示例： /procurement/orders/123
router.get('/:orderId', procurementOrderController.getOrderDetail);

// 3. 创建新采购订单（含明细）
// 请求方式：POST
// 示例： /procurement/orders
// 请求体：{ supplierId: 3, createdUid: 1, details: [{ goodsId: 5, orderedCount: 50, unitPrice: 8.5 }], ... }
router.post('/', procurementOrderController.createOrder);

// 4. 更新采购订单（全量更新，含主表字段和明细）
// 请求方式：PUT
// 示例： /procurement/orders/123
// 请求体：{ updatedUid: 1, status: 2, details: [...], ... }
router.put('/:orderId', procurementOrderController.updateOrder);

// 5. 删除采购订单（仅允许删除“待发货”状态订单）
// 请求方式：DELETE
// 示例： /procurement/orders/123
// 请求体：{ operatorId: 1 }
// router.delete('/:orderId', procurementOrderController.deleteOrder);

// 6. 单独更新采购订单状态（严格控制状态流转）
// 请求方式：PATCH（部分更新）
// 示例： /procurement/orders/123/status
// 请求体：{ status: 2, operatorId: 1, notes: "已通知供应商发货" }
router.put('/status/:orderId', procurementOrderController.updateOrderStatus);

// // 7.根据供应商ID获取对应的食材列表
// router.get('/supplier_goods', procurementOrderController.getGoodsListBySupplierId);

module.exports = router;